import 'package:flutter/material.dart';
//class ShareDataWidget extends InheritedWidget{
//  ShareDataWidget({
//    @required this.data,
//    Widget child,
//}) :super(child: child);
//  final int data;
//  static ShareDataWidget of(BuildContext context){
//    return context.inheritFromWidgetOfExactType(ShareDataWidget);
//  }
//  @override
//  bool updateShouldNotify(ShareDataWidget old){
//    return old.data != data;
//  }
//}
class ShareDataWidget extends InheritedWidget {
  ShareDataWidget({
    @required this.data,
    Widget child
  }) :super(child: child);

  final int data; //需要在子树中共享的数据，保存点击次数

  //定义一个便捷方法，方便子树中的widget获取共享数据
  static ShareDataWidget of(BuildContext context) {
    return context.inheritFromWidgetOfExactType(ShareDataWidget);
    //  子widget中不触发didChangeDependencies回调
    //   return context.ancestorInheritedElementForWidgetOfExactType(ShareDataWidget).widget;
  }

  //该回调决定当data发生变化时，是否通知子树中依赖data的Widget
  @override
  bool updateShouldNotify(ShareDataWidget old) {
    //如果返回true，则子树中依赖(build函数中有调用)本widget
    //的子widget的`state.didChangeDependencies`会被调用
    return old.data != data;
  }
}